package org.zjx.core.client;

import org.zjx.core.GameAction;

import java.util.Optional;

/**
 * 动作拉取器接口
 *
 * 定义了从客户端获取待执行动作的标准接口，支持非阻塞式动作拉取、
 * 动作注册和执行结果确认等基本操作。
 */
public interface ActionPuller {
    /**
     * 拉取待执行动作（非阻塞）
     * @param clientId 客户端ID
     * @return 可选的游戏动作，如果没有待执行动作则返回空
     */
    Optional<GameAction> pullAction(String clientId);

    /**
     * 注册新动作
     * @param clientId 客户端ID
     * @param action 要注册的游戏动作
     */
    void registerAction(String clientId, GameAction action);

    /**
     * 确认动作执行结果
     * @param clientId 客户端ID
     * @param actionId 动作ID
     * @param success 执行是否成功
     */
    void acknowledge(String clientId, String actionId, boolean success);
}